Virtualization of computing systems has become quite prevalent in recent times. This refers to a new layer that abstracts the hardware platform from the operating system (OS), and the associated applications that run on it. This virtualization technique allows the hardware platform to support the concurrent running of more than one operating system and their associated applications held in containers called virtual machines, controlled and scheduled by a virtual machine monitor (VMM). This has offered a way for computer operators to consolidate, optimize and increase efficiencies of computing platforms as well as simplifying application deployment.
Some computer operators, including software vendors, who are interested in simplifying the delivery, control, supportability, security and the tuning of their applications to work in a virtualized environment have created a purpose-built VM containing a preferred Operating System (OS) and their application(s), and configured the virtual machine to the most optimal settings for their needs. At the same time they can choose to restrict how their application(s) and OS are accessed by disabling specific ports and OS utilities, even disabling command line login. This type of virtual machine has been named a virtual appliance.
As a result, virtual appliances are becoming widespread on the Internet, and many of them are available for little or no cost. They can be downloaded quite quickly, installed and started up on a virtualization platform with ease.
For the purposes of clarity, in the remainder of the document the terms VM and VA will be used interchangeably and will mean either a VM or a VA.
As VMs become more prevalent, numerous issues arise, ranging from security to management of VMs. A non-exhaustive list of issues includes assuring the authenticity of the VM, assuring the VM comes from a known source, et al.
Certain of these issues have been solved in the software industry for other types of objects. Web servers, especially for online banking or e-commerce, have been exchanging digital certificates to secure communications. These digital certificates allow the user to know that he/she is communicating with the correct entity. Digital certificates are controlled by a central authority and are given out only when sufficient proof has been provided by the potential digital certificate owner. The digital certificates also provide access to a “public key”, which is one of two keys used in asymmetric cryptography to secure communications. The private key is held by the web server (the online banking institution or e-commerce site). This is an oversimplification of the technology, but each side uses its half of the key to encrypt outgoing information and decrypt incoming data ensuring a secure session.
Similar technology concept was applied to software code. The vendor obtains a digital certificate from a recognized certificate authority and creates a hash of its code, e.g., by using cryptographic hashing algorithms such as Message-Digest Algorithm 5 (MD5), or Secure Hash Algorithms (SHA). This hash is sensitive to even one bit change within code, thereby guaranteeing the integrity of the code. The vendor then uses its private key to sign the code by encrypting the hash and embedding this signature into the code package. This signature not only allowed the customer/end-user to verify that this code came from the source it was supposed to, but allows them to retrieve the embedded hash and compare it against the hash calculation they do themselves over the code to see if they match. If not, the package is diagnosed to have been compromised.
In spite of existing software solutions, there is an existing need in the industry for the development of an improved and effective method and system for managing and securing VMs, including tracking and controlling of VMs.